我一開始完全不懂迴圈是怎麼操作的,看了別人的解題方法,也不懂為什麼這樣寫,就會重複呢?
JavaScript有三種迴圈,怎麼知道什麼情況下用哪種迴圈?
JavaScript 中有三種迴圈,分別是for、while、do..while
,在實作中最常用到的是for、while
迴圈。
所有的迴圈都必須包含:
1.初始值(begin)
2.終止條件(condition)當終止條件為 false 時停止迴圈
3.遞增或遞減的方式(step)
4.循環體(do):每一迴圈要做的事情。
。迭代:每進入一次循環體我們就稱為“一次迭代”,假設進入三次就稱為三次迭代。
。參考文章:[第四週] JavaScript — 迴圈(Loop)while、for,如果想要學習更詳細的迴圈內容,可以參考這篇文章,我覺得他寫的淺顯易懂,受益良多。
這篇要來講解我學習while
迴圈的Tip!
while題目:
### Task
Coding in function padIt, function accept 2 parameters:
str, it's a string representing the string to pad, we need pad some "*" at leftside or rightside of str
n, it's a number, how many times to pad the string.
### Behaviour
You need to write a loop statement within the function that loops n times. Each time through the loop it will add one * to str, alternating on which side it is padded: the first time will add a * to the left side of str, the second time will add a * to the right side, and so on.
### Solution
function padIt(str,n){
}
這題我卡很久,因為我知道如何印出文字,但不知道如何讓他重複顯示,這時就要來說明一下解題思路:
首先:要如何判斷單數及雙數?
假設 i 是一個數字
let i = 1;
if(i%2 === 1){
console.log("我是單數");
}else{
console.log("我是雙數");
}
% 是取餘數的意思,上面那段語法的意思就是“如果數字i 除以2 餘數等於1的話(=== 是嚴格相等的意思),顯示我是單數,否則顯示我是雙數”
第二步:解決左右要如何顯示*
?
let i = 1;
let returnStr = str;
if(i%2 === 1){
returnStr = "*" + returnStr;
}else{
returnStr = returnStr + "*";
}
第三步:完整while寫法
function padIt(str,n){
let i = 1;
let returnStr = str;
while (i<=n){
if(i%2 === 1){
returnStr = "*" + returnStr;
}else{
returnStr = returnStr + "*";
}
i++;
}
return returnStr;
}
i++
是什麼呢?就是前面講到的“遞增或遞減的方式”i++
是遞增,i--
就是遞減囉!